Function.prototype.newBind=function(obj){
    const arg1 = Array.prototype.slice.call(arguments,1)
    const that = this
    let back = function(){
      const arg2 = Array.prototype.slice.call(arguments)
       if(this instanceof back){
             return that.apply(this,arg1.concat(arg2))
       }
      return that.apply(obj,arg1.concat(arg2))
    }
    // 返回的值的原型对象需要与调用它的函数原型进行关联
    back.prototype = Object.create(this.prototype)
    // 上述语句与此处异曲同工
    // function o(){}
    // o.prototype = this.prototype
    // back.prototype = new o()
    return back
  }